Mininet+Ryu安装教程

您所在的位置:网站首页 ubuntu apt-get update 没有路由 Mininet+Ryu安装教程

Mininet+Ryu安装教程

2023-06-05 14:09| 来源: 网络整理| 查看: 265

最近要做一个Mininet的网络环境,网络设备由Mininet来模拟,SDN控制器用Ryu来做,为了避免每次重新做再去翻查资料,我在这里系统地整理一遍

硬件需求

我在 VMWare Workstation 16 Player虚拟机上运行的Ubuntu 22.04.1

硬件需求内存至少4G以上,我分配了8个GCPU至少2个核心,我分配了4个硬盘30G以上,我分配了100G 版本需求 软件版本Ubuntu22.04.1Mininet2.3.0Ryu4.34Python3.8Ovs2.9.8Openflow1.3 软件安装

这两句随时准备着,出问题的时候先尝试一下

sudo apt update sudo apt upgrade Mininet安装 sudo apt-get install git git clone https://github.com/mininet/mininet cd mininet git tag git checkout -b mininet-2.3.0 2.3.0 cd .. mininet/util/install.sh -a

第一个问题,端口拒绝访问: Cloning into 'openflow'... fatal: unable to connect to github.com: github.com[0: 20.27.177.113]: errno=Connection refused

git config --global url.https://github.com/.insteadOf git://github.com/ mininet/util/install.sh -a

安装完毕后测试:

sudo mn --switch ovsbr --test pingall

测试成功: 在这里插入图片描述

Ryu安装

接下来这几步我只是为了说明python3.10中运行Ryu的困难,我搞了一整天,甚至不小心删除了python3.10搞崩了Ubuntu,也没有搞定这些问题,嫌麻烦的同学直接跳到下载python3.8的部分

sudo apt install gcc libffi-dev libssl-dev libxml2-dev libxslt1-dev zlib1g-dev -y sudo pip install ryu cd ryu sudo pip install -r tools/pip-requires

查看Ryu4.34安装与测试运行:

sudo pip show ryu sudo ryu-manager

第一个问题,eventlet版本太新: ImportError: cannot import name 'ALREADY_HANDLED' from 'eventlet.wsgi' (/home/jzjs/.local/lib/python3.10/site-packages/eventlet/wsgi.py)

sudo pip uninstall eventlet sudo pip install eventlet==0.30.2

第二个问题,Python版本太新: TypeError: cannot set 'is_timeout' attribute of immutable type 'TimeoutError'

解决办法:下载python3.8,并启用虚拟环境ryu-venv,重新安装Ryu,注意有些地方不能用sudo:

sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository ppa:deadsnakes/ppa sudo apt-get update sudo apt-get install python3.8 python3.8-venv python3.8-dev python3.8 -m venv ryu-venv source ryu-venv/bin/activate pip install ryu cd ryu pip install -r tools/pip-requires pip uninstall eventlet pip install eventlet==0.30.2

重新查看Ryu4.34安装,这次确实是安装在python3.8/site-packages当中了:

pip show ryu ryu-manager

测试成功: 在这里插入图片描述

随时进入和关闭虚拟环境:

source ryu-venv/bin/activate deactivate

要是关闭后忘记了路径就敲下面的命令:

find ~/ -name "activate" Ryu GUI安装

Ryu GUI所需要的webob和routes库已经在下面的命令中安装完毕:

pip install -r tools/pip-requires

测试Ryu的GUI,注意,你的路径和我的不一样:

cd /home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology sudo ryu-manager --observe-links --verbose gui_topology.py

浏览器打开http://0.0.0.0:8080后,发现有如下问题: OSError: Path does not exist or is not directory: '/home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology/html/'

Ryu的GUI找不到所需文件,为了解决这个问题,手动创建所需的目录并将GUI应用程序的源代码复制到那里:

git clone https://github.com/osrg/ryu.git mkdir -p /home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology/html/ cp -r ryu/ryu/app/gui_topology/html/* /home/jzjs/ryu/ryu-venv/lib/python3.8/site-packages/ryu/app/gui_topology/html/ sudo ryu-manager --observe-links --verbose gui_topology.py

成功打开: 在这里插入图片描述

Mininet和Ryu联动

继续在上面的路径里,运行openflow1.3的交换机:

ryu-manager --observe-links ryu/ryu/app/gui_topology/gui_topology.py ryu/ryu/app/simple_switch_13.py

另外打开一个终端,输入Mininet的语句:

sudo mn --controller remote,ip=127.0.0.1 --topo linear,3 --mac --switch ovsk --link tc

刷新一下浏览器,可以看到下面的界面便大功告成: 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3